package com.sugar.real.estate.module.business.service.info;

import com.sugar.real.estate.framework.common.pojo.PageResult;
import com.sugar.real.estate.module.business.controller.admin.apartment.vo.ApartmentUpdateReqVO;
import com.sugar.real.estate.module.business.controller.admin.info.vo.InfoAllRespVO;
import com.sugar.real.estate.module.business.controller.admin.info.vo.InfoPageReqVO;
import com.sugar.real.estate.module.business.controller.admin.info.vo.InfoRespVO;
import com.sugar.real.estate.module.business.controller.admin.info.vo.InfoSaveReqVO;
import com.sugar.real.estate.module.business.controller.app.info.vo.AppInfoPageReqVO;
import com.sugar.real.estate.module.business.controller.app.info.vo.AppInfoRespVO;
import com.sugar.real.estate.module.business.dal.dataobject.info.InfoDO;

import javax.validation.Valid;
import java.util.List;

/**
 * 资讯信息 Service 接口
 *
 * @author Ysugar
 */
public interface InfoService {

    /**
     * 创建资讯信息
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Long createInfo(@Valid InfoSaveReqVO createReqVO);

    /**
     * 更新资讯信息
     *
     * @param updateReqVO 更新信息
     */
    void updateInfo(@Valid InfoSaveReqVO updateReqVO);

    /**
     * 删除资讯信息
     *
     * @param id 编号
     */
    void deleteInfo(Long id);

    /**
     * 获得资讯信息
     *
     * @param id 编号
     * @return 资讯信息
     */
    InfoDO getInfo(Long id);

    /**
     * 获得资讯信息分页
     *
     * @param pageReqVO 分页查询
     * @return 资讯信息分页
     */
    PageResult<InfoRespVO> getInfoPage(InfoPageReqVO pageReqVO);

    List<InfoAllRespVO> getInfos();

    void updateStatus(@Valid ApartmentUpdateReqVO updateReqVO);

    // ======================================== APP 接口 ========================================

    AppInfoRespVO appGetInfo(Long id);

    PageResult<AppInfoRespVO> appGetInfoPage(@Valid AppInfoPageReqVO pageReqVO);

    List<AppInfoRespVO> getHotList();
}